home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / i / magicbio.i < prev    next >
Encoding:
Modula Implementation  |  1997-10-26  |  5.9 KB  |  290 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *         MAGIC   Modula's  All purpose  GEM  Interface  Cadre         *
  4.  *                 ÿ         ÿ            ÿ    ÿ          ÿ             *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus in schrift-  *
  11.  * licher Form, insbesondere in Zeitschriften, sowie die Verbreitung    *
  12.  * ber Public-Domain-H„ndler bedarf der ausdrcklichen schriftlichen   *
  13.  * Genehmigung des Autors!                                              *
  14.  *                                                                      *
  15.  * Der Autor gibt hiermit die ausdrckliche Erlaubnis, das Modul jeder- *
  16.  * zeit auch im Quelltext weiterzugegeben, sofern dessen Text und ins-  *
  17.  * besondere dieser Urheberrechts-Vermerk nicht ver„ndert wird, und     *
  18.  * durch die Weitergabe kein finanzieller Nutzen entsteht. Der Autor    *
  19.  * beh„lt sich das Recht vor, diese Erlaubnis jederzeit u. ohne Angaben *
  20.  * von Grnden zu widerrufen.                                           *
  21.  *----------------------------------------------------------------------*)
  22.  
  23. IMPLEMENTATION MODULE MagicBIOS;
  24.  
  25. (*----------------------------------------------------------------------*
  26.  * Int. Vers | Datum    | Name | Žnderung                               *
  27.  *-----------+----------+------+----------------------------------------*
  28.  *  3.00     | 18.01.92 |  Hp  |                                        *
  29.  *-----------+----------+------+----------------------------------------*)
  30.  
  31.  
  32.  
  33. (* IMPLEMENTATION FšR  >>> Megamax-Modula-2 <<< *)
  34. (*                                              *)
  35. (*$R-   Range-Checks                            *)
  36. (*$S-   Stack-Check                             *)
  37. (*                                              *)
  38. (*----------------------------------------------*)
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  46.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  47.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  48.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET,
  49.                         CastToChar, CastToByte, CastToByteset, CastToInt,
  50.                         CastToCard, CastToBitset, CastToWord, CastToLInt,
  51.                         CastToLCard, CastToLBitset, CastToLWord, CastToAddr,
  52.                         TosVersion, Accessory, Basepage, SysHeader, TosDate;
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. IMPORT MagicSys;
  60. IMPORT SYSTEM;
  61.  
  62.  
  63. CONST TRAP13 = 04E4DH;
  64.       AddSP =  0DFFCH;
  65.       D0 =     0;
  66.  
  67.  
  68.  
  69.  
  70. VAR   long, result: lCARDINAL;
  71.  
  72.  
  73. VAR lc: lCARDINAL;
  74.     li: lINTEGER;
  75.     lb: lBITSET;
  76.     i:  sINTEGER;
  77.     c:  sCARDINAL;
  78.     b:  sBITSET;
  79.     a:  SYSTEM.ADDRESS;
  80.     x:  sCARDINAL;
  81.  
  82.  
  83. PROCEDURE Getmpb (VAR mpb: SYSTEM.ADDRESS);
  84. BEGIN
  85.  
  86.  SYSTEM.ASSEMBLER
  87.   MOVE.L  mpb(A6), -(SP)
  88.   MOVE    #0, -(SP)
  89.   TRAP    #13
  90.   ADDQ.L  #6, SP
  91.  END;
  92.  
  93.  
  94.  
  95.  
  96. END Getmpb;
  97.  
  98. PROCEDURE Bconstat (device: sINTEGER): BOOLEAN;
  99. BEGIN
  100.  
  101.  SYSTEM.ASSEMBLER
  102.   MOVE.W  device(A6), -(SP)
  103.   MOVE    #1, -(SP)
  104.   TRAP    #13
  105.   ADDQ.L  #4, SP
  106.   MOVE.W  D0, c
  107.  END;
  108.  RETURN c # 0;
  109.  
  110.  
  111.  
  112.  
  113. END Bconstat;
  114.  
  115. PROCEDURE Bconin (device: sINTEGER): lCARDINAL;
  116. BEGIN
  117.  
  118.  SYSTEM.ASSEMBLER
  119.   MOVE.W  device(A6), -(SP)
  120.   MOVE    #2, -(SP)
  121.   TRAP    #13
  122.   ADDQ.L  #4, SP
  123.   MOVE.W  D0, lc
  124.  END;
  125.  RETURN lc;
  126.  
  127.  
  128.  
  129.  
  130. END Bconin;
  131.  
  132. PROCEDURE Bconout (device: sINTEGER; c: CHAR);
  133. BEGIN
  134.  
  135.  x:= ORD (c);
  136.  SYSTEM.ASSEMBLER
  137.   MOVE.W  x, -(SP)
  138.   MOVE.W  device(A6), -(SP)
  139.   MOVE    #3, -(SP)
  140.   TRAP    #13
  141.   ADDQ.L  #6, SP
  142.  END;
  143.  
  144.  
  145.  
  146.  
  147. END Bconout;
  148.  
  149. PROCEDURE Rwabs (rw: sINTEGER; buf: SYSTEM.ADDRESS; count, recno, dev: sINTEGER): lINTEGER;
  150. BEGIN
  151.  
  152.  SYSTEM.ASSEMBLER
  153.   MOVE.W  dev(A6), -(SP)      
  154.   MOVE.W  recno(A6), -(SP)
  155.   MOVE.W  count(A6), -(SP)
  156.   MOVE.L  buf(A6), -(SP)
  157.   MOVE.W  rw(A6), -(SP)
  158.   MOVE    #4, -(SP)
  159.   TRAP    #13
  160.   LEA     $E(SP), SP
  161.   MOVE.L  D0, li
  162.  END;
  163.  RETURN li;
  164.  
  165.  
  166.  
  167.  
  168. END Rwabs;
  169.  
  170. PROCEDURE Setexc (vecnum: sINTEGER; vec: SYSTEM.ADDRESS): SYSTEM.ADDRESS;
  171. BEGIN
  172.  
  173.  SYSTEM.ASSEMBLER
  174.   MOVE.L  vec(A6), -(SP)
  175.   MOVE.W  vecnum(A6), -(SP);
  176.   MOVE    #5, -(SP)
  177.   TRAP    #13
  178.   ADDQ.L  #8, SP
  179.   MOVE.L  D0, a
  180.  END;
  181.  RETURN a;
  182.  
  183.  
  184.  
  185.  
  186. END Setexc;
  187.  
  188. PROCEDURE Tickcal(): lCARDINAL;
  189. BEGIN
  190.  
  191.  SYSTEM.ASSEMBLER
  192.   MOVE    #6, -(SP)
  193.   TRAP    #13
  194.   ADDQ.L  #2, SP
  195.   MOVE.L  D0, lc
  196.  END;
  197.  RETURN lc;
  198.  
  199.  
  200.  
  201.  
  202. END Tickcal;
  203.  
  204. PROCEDURE Getbpb (drive: sINTEGER): SYSTEM.ADDRESS;
  205. BEGIN
  206.  
  207.  SYSTEM.ASSEMBLER
  208.   MOVE.W  drive(A6), -(SP)  
  209.   MOVE    #7, -(SP)
  210.   TRAP    #13
  211.   ADDQ.L  #4, SP
  212.   MOVE.L  D0, a
  213.  END; 
  214.  RETURN a;
  215.  
  216.  
  217.  
  218.  
  219. END Getbpb;
  220.  
  221. PROCEDURE Bcostat (device: sINTEGER): BOOLEAN;
  222. BEGIN
  223.  
  224.  SYSTEM.ASSEMBLER
  225.   MOVE.W  device(A6), -(SP)
  226.   MOVE    #8, -(SP)
  227.   TRAP    #13
  228.   ADDQ.L  #4, SP
  229.   MOVE.W  D0, c
  230.  END;
  231.  RETURN c # 0;
  232.  
  233.  
  234.  
  235.  
  236. END Bcostat;
  237.  
  238. PROCEDURE Mediach (dev: sINTEGER): sINTEGER;
  239. BEGIN
  240.  
  241.  SYSTEM.ASSEMBLER
  242.   MOVE.W  dev(A6), -(SP)
  243.   MOVE    #9, -(SP)
  244.   TRAP    #13
  245.   ADDQ.L  #4, SP
  246.   MOVE.W  D0, i
  247.  END;
  248.  RETURN i;
  249.  
  250.  
  251.  
  252.  
  253. END Mediach;
  254.  
  255. PROCEDURE Drvmap (): lBITSET;
  256. BEGIN
  257.  
  258.  SYSTEM.ASSEMBLER
  259.   MOVE    #10, -(SP)
  260.   TRAP    #13
  261.   ADDQ.L  #2, SP
  262.   MOVE.L  D0, lb
  263.  END; 
  264.  RETURN lb;
  265.  
  266.  
  267.  
  268.  
  269. END Drvmap;
  270.  
  271. PROCEDURE Kbshift (keys: sBITSET): sBITSET;
  272. BEGIN
  273.  
  274.  SYSTEM.ASSEMBLER
  275.   MOVE.W  keys(A6), -(SP);
  276.   MOVE    #11, -(SP)
  277.   TRAP    #13
  278.   ADDQ.L  #4, SP
  279.   MOVE.W  D0, b
  280.  END;
  281.  RETURN b;
  282.  
  283.  
  284.  
  285.  
  286. END Kbshift;
  287.  
  288. END MagicBIOS.
  289.  
  290.